//
// Created by xuan on 2024/5/19.
//

#ifndef WI_FI_F429_UPRE_BSP_UART_R1_F429_H
#define WI_FI_F429_UPRE_BSP_UART_R1_F429_H

#include "stm32f429xx.h"
#include "stdbool.h"

extern uint8_t Path_num;

extern bool Ball[12];

/**

*@Function(函数名称):MasterSlave_communication_Init()   串口UART7中断接收
 *@Function         MasterSlave_communication_Receive()数据包处理 1.接收当前路径节点号，执行上层相关任务。(包头 0x88 包尾 0x11)2.接收球颜色录入结果反馈。(包头 0x33 包尾 0x03)
 *@Function         MasterSlave_communication_Transmit_PathContinue(bool pathContinue_flag)上层任务完成，底盘进行下一段路径
 *@Function         MasterSlave_communication_Transmit_BallColor()从手柄获取到二区球的颜色，传递给底盘主板

*@T0_do(功能作用):主从机间通信(用于半自动)

*@Pin(使用管脚):UART7 波特率115200 数据位8位 停止位1位 校验位None
 * @Pin         TX PE8
 * @Pin         RX PE7

*@var(主要变量): bool Ball[12];手柄数据包解算完成后，将球颜色录入该数组，再调用MasterSlave_communication_Transmit_BallColor()；函数即可完成发送。
 * @var        MasterSlave_communication_Receive()
 * @var        1. 包头 0x88 包尾 0x11 数据帧1字节 底盘主板发送当前路径节点号，调度上层机构执行该节点任务。
 * @var        完成任务后调用MasterSlave_communication_Transmit_PathContinue(1)；
 *
 * @var        2. 包头 0x33 包尾 0x11 数据帧1字节 二区球颜色录入结果反馈，发给手柄的函数调用已添加注释位置

*@hardware(搭载硬件):STM32F429IGT6（主控-FindBin-V3.0）

*@group(组别):底盘组

*qq|wechat|tel(选填):q:111111;w:222222:t:333333

**/
void MasterSlave_communication_Init(void);

void MasterSlave_communication_Receive(void);

void MasterSlave_communication_Transmit_PathContinue(bool pathContinue_flag);

void MasterSlave_communication_Transmit_BallColor();

/**

*@Function(函数名称):ManualMode_Transmit(dir, size) 包头 0xc0 包尾 0x0c
*@Function         ManualModeState_Transmit(manualstate) 包头 0x44 包尾 0x04

*@To_do(功能作用):发送是否使用手动模式标志位和手柄控制底盘的速度和方向

*@Pin(使用管脚):UART7 波特率115200 数据位8位 停止位1位 校验位None
 * @Pin         TX PE8
 * @Pin         RX PE7

*@var(主要变量):float dir 车体运动方向
 *@var        float size 车体运动速度
*@var         bool manualstate 是否使用手动模式


*@hardware(搭载硬件):STM32F429IGT6（主控-FindBin-V3.0）

*@group(组别):底盘组

*qq|wechat|tel(选填):q:111111;w:222222:t:333333

**/

void ManualModeState_Transmit(bool manualstate);


void ManualMode_Transmit(float dir, float size);

/**

*@Function(函数名称):Communicate_Init()
*@Function         Communicate_Receive()

*@To_do(功能作用):发送手柄控制底盘的速度和方向

*@Pin(使用管脚):UART7 波特率115200 数据位8位 停止位1位 校验位None
 * @Pin         TX PE8
 * @Pin         RX PE7

 * @var        Communicate_Receive()
 * @var        1. 包头 0x88 包尾 0x11 数据帧1字节 底盘主板发送当前路径节点号，调度上层机构执行该节点任务。
 * @var        完成任务后调用MasterSlave_communication_Transmit_PathContinue(1)；
 *
 * @var        2. 包头 0x33 包尾 0x11 数据帧1字节 二区球颜色录入结果反馈，发给手柄的函数调用已添加注释位置

*@hardware(搭载硬件):STM32F429IGT6（主控-FindBin-V3.0）

*@group(组别):底盘组

*qq|wechat|tel(选填):q:111111;w:222222:t:333333

**/
void Communicate_Init(void);
/////建议使用该接收函数；
void Communicate_Receive(void);

#endif //WI_FI_F429_UPRE_BSP_UART_R1_F429_H
